package pascal.negocio;

import java.util.Collection;

import pascal.dao.PublicacionDAO;
import pascal.excepcion.DAOExcepcion;
import pascal.modelo.Publicacion;

public class GestionPublicacion {
	
	public Publicacion insertar(
			int codPublicacion,
			int codCategoria,
			String tituloPublicacion,
			String descripcionPublicacion,
			String condicionPublicacion,
			int cantidadInicial,
			int stock,
			double precioUnitario,
			java.sql.Date fechaCreacion,
			int diasDuracion,
			java.sql.Date fechaVencimiento,
			int cantRecomendacion,
			int cantidadClick,
			String estadoPublicacion,
			int codUsuarioPublica,
			java.sql.Date feStringegistro)
			throws DAOExcepcion {		
		
		PublicacionDAO dao = new PublicacionDAO();

		Publicacion vo = new Publicacion();
		vo.setCodPublicacion(codPublicacion);
		vo.setCodCategoria(codCategoria);
		vo.setTituloPublicacion(tituloPublicacion);
		vo.setDescripcionPublicacion(descripcionPublicacion);
		vo.setCondicionPublicacion(condicionPublicacion);
		vo.setCantidadInicial(cantidadInicial);
		vo.setStock(stock);
		vo.setPrecioUnitario(precioUnitario);
		vo.setFechaCreacion(fechaCreacion);
		vo.setDiasDuracion(diasDuracion);
		vo.setFechaVencimiento(fechaVencimiento);
		vo.setCantRecomendacion(cantRecomendacion);
		vo.setCantidadClick(cantidadClick);
		vo.setEstadoPublicacion(estadoPublicacion);
		vo.setUsuarioPublica(codUsuarioPublica);
		vo.setFeStringegistro(feStringegistro);
			
		return dao.insertar(vo);
			
	}
	
	public void eliminar(int codPublicacion) throws DAOExcepcion {
		PublicacionDAO dao = new PublicacionDAO();
		dao.eliminar(codPublicacion);
	}
	
	public Publicacion obtener(int codPublicacion) throws DAOExcepcion {
		PublicacionDAO dao = new PublicacionDAO();
		return dao.obtener(codPublicacion);
	}
	
	public Collection<Publicacion> listar() throws DAOExcepcion {
		PublicacionDAO dao = new PublicacionDAO();
		return dao.listar();
	}
	
	public Collection<Publicacion> buscarPorTituloODescripcion(String filtro) throws DAOExcepcion {
		PublicacionDAO dao = new PublicacionDAO();
		return dao.buscarPorTituloODescripcion(filtro);
	}
	
	public Publicacion actualizar(int cantidadClick, int cantidadRecomendacion, 
			int stock, int codigoPublicacion) throws DAOExcepcion {
		PublicacionDAO dao = new PublicacionDAO();

		//Publicacion BD
		Publicacion vo = this.obtener(codigoPublicacion);
		
		
		if(cantidadClick != 0)
			vo.setCantidadClick(vo.getCantidadClick() + 1);
		
		if(cantidadRecomendacion != 0)
			vo.setCantRecomendacion(vo.getCantRecomendacion() + 1);
		
		if(stock != 0)
			vo.setStock(vo.getStock() - stock);
		
		
		return dao.actualizar(vo);
	}

}